<?php

/**
 * Description of m_facebook_feeds
 *
 * @author Níssius Ribas
 */
class m_facebook_feeds extends NT_Manager_Controller {

    private $crud;

    public function __construct() {
        parent::__construct();

        $this->checkLogin();

        $this->load->model("nt_global_facebook_feeds");

        $this->load->library('grocery_CRUD');
        $this->crud = new grocery_CRUD();

        $this->load->model("nt_global_facebook_feeds");

        $this->crud->set_rules($this->nt_global_facebook_feeds->getRules())
                ->auto_label($this->nt_global_facebook_feeds->getRules())
                ->set_table($this->nt_global_facebook_feeds->getSft())
                ->add_multiselect(base_url()."manager/facebook_feeds/multiselect/")
                ->add_bolean_status_switcher("PUBLIC", base_url() . "manager/facebook_feeds/booleanswitcher/")
                ->unset_columns("LINK", "ICON", "UPDATED_TIME", "LIKES_COUNT", "IMPORTED_TIME", "PICTURE", "PUBLIC")
                ->order_by("CREATED_TIME", 'DESC')
                ->change_field_type("PUBLIC", "true_false")
                ->change_field_type("MESSAGE", "text")
                ->unset_texteditor("MESSAGE")
                ->unset_print();

        if (!$this->nt_manager_permissoes->isValid(array("manager", "facebook_feeds", "index", "export")))
            $this->crud->unset_export();

        if (!$this->nt_manager_permissoes->isValid(array("manager", "facebook_feeds", "index", "add")))
            $this->crud->unset_add();

        if (!$this->nt_manager_permissoes->isValid(array("manager", "facebook_feeds", "index", "edit")))
            $this->crud->unset_edit();

        if (!$this->nt_manager_permissoes->isValid(array("manager", "facebook_feeds", "index", "delete")))
            $this->crud->unset_delete();
    }

    /**
     * Faz a chamada ao método que executa o switcher, melhor que tenha um atalho
     * em cada controller (onde se consegue manipular permissoes) do que um geral (na internal)
     * em que se tinha que dar permissões a todos.
     * 
     * @param type $base64_table_and_field
     * @param type $row_ID
     */
    public function booleanswitcher($base64_table_and_field, $row_ID) {
        $this->load->model("nt_grocery");
        $this->nt_grocery->ajxBooleanReverseStatusDecode($base64_table_and_field, $row_ID);
    }
    
    
    /**
     * Por questão de segurança, o grocery está jogando de volta para o controller
     * que chamou, assim aqui neste metodo se pode constrolar segurança e permissões
     * se for implementado na camada do grocery, seria um permenitr ou  não para todos
     * 
     * @param type $acao
     * @param type $ids
     */
    public function multiselect($acao = false, $ids = false){
        $this->load->model("nt_grocery");
        return $this->nt_grocery->ajxmultiselect($acao, $ids);
    }  
    

    public function index() {

        $data['estado'] = $this->crud->getState();
        $data['autoupdate'] = $this->nt_global_parametros->q('api_facebook_auto_update');
        $data['accepted'] = $this->nt_global_facebook_feeds->isAccepted();



        $data['cssexec'] = "#field-SHARES_COUNT{ width: 100px; }";
        $data['cssexec'] .= "#field-COMMENTS_COUNT { width: 100px; }";
        $data['cssexec'] .= "#field-LIKES_COUNT{ width: 100px; }";

        $data['crud'] = $this->crud->render();
        $this->load->view("manager/m_facebook_feeds/index", $data);
    }

    public function allow() {

        $this->nt_global_facebook_feeds->init();

        $user = $this->nt_global_facebook_feeds->getUser();

        // se nao pode pegar as infos do usuário
        if (!$user) {

            $url = $this->nt_global_facebook_feeds->getLoginUrl();
            echo("<script> window.location.href='$url'; </script>");
            // redirect($url);
            die("<a href='$url'>Não está redirecionando? Clique aqui</a>");
        } else {


            $accessToken = $this->nt_global_facebook_feeds->getAccessToken();

            if ($accessToken) {

                $this->nt_global_parametros->update('api_facebook_return_access_token', $accessToken);
                $this->nt_global_parametros->update('api_facebook_user_id', $user);
                $this->nt_global_parametros->update('api_facebook_app_accepted', 'true');

                $share['at'] = $accessToken;

                $this->load->view("manager/m_facebook_feeds/fim_aceitou", $share);
            } else {

                die("Erro ao buscar o access token");
            }
        }
    }

    public function ajx_update() {

        $this->load->model("nt_global_facebook_feeds");

        if ($this->nt_global_facebook_feeds->decideAndMaybeUpdate()) {

            echo("O feed foi atualizado em " . date("d/m/Y H:i:s"));
        } else {

            echo("Os feeds já foram recentemente atualizados. Nada feito.");
        }
    }

}
